1. Field of the Invention
This invention relates to computer networks and file storage systems. More particularly, the invention relates to a system and method for providing coherency of file replicas (or other types of object replicas) for a distributed file sharing system.
2. Description of the Related Art
Computer networks are important for many different applications. One important type of networking is referred to as peer-to-peer or P2P networking. As used herein, a peer-to-peer network is generally used to describe a decentralized network of peer nodes where each node may have similar capabilities and/or responsibilities. Participating peer nodes in a P2P network may communicate directly with each other. Work may be done and information may be shared through interaction among the peers. In addition, in a P2P network, a given peer node may be equally capable of serving as either a client or a server for another peer node.
A peer-to-peer network may be created to fulfill some specific need, or it may be created as a general-purpose network. Some P2P networks are created to deliver one type of service and thus typically run one application. For example, Napster was created to enable users to share music files. Other P2P networks are intended as general purpose networks which may support a large variety of applications. Any of various kinds of distributed applications may execute on a P2P network. Exemplary peer-to-peer applications include file sharing, messaging applications, distributed processing, etc.
A peer-to-peer network may be especially useful for applications which utilize distributed or shared data, in part because the reliance on centralized servers to access data can be reduced or eliminated. In particular, it may be desirable to implement a distributed file sharing system using a P2P network.
In some distributed file sharing systems, files may be replicated on multiple nodes in the system. One problem involved in such a system is how to maintain coherency among the various replicas of a file. Prior art techniques for handling this problem fall into two general categories: high coherency and loose coherency. In a highly coherent system, latency and availability are typically sacrificed in the interests of data correctness and coherency. All the replicas are always kept coherent, but update operations take longer. Also, fewer failures are required to make a file inaccessible.
In a loosely coherent system, availability and low latency for file access operations are stressed. However, these systems typically suffer from lack of data coherency guarantees. Thus, it may be desirable to provide a system with high file availability and low access latency that also provides strong coherency guarantees.